package com.company.nuwa.common.domain.geo;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Lists;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * <p>结构化地址信息</p>
 *
 * @author Lionel Lee
 * @version 1.0: AddressComponentDTO.java
 * @date 2021/7/29 11:32 上午
 */
@Data
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class AddressComponentDTO implements Serializable {

    /**
     * 国家
     */
    private String country;

    /**
     * province
     * <p>
     * 坐标点所在省名称
     * <p>
     * 例如：北京市
     */
    private String province;
    @JsonProperty("realCity")
    private List<String> city;
    /**
     * 坐标点所在城市名称
     * <p>
     * 请注意：当城市是省直辖县时返回为空，以及城市为北京、上海、天津、重庆四个直辖市时，该字段返回为空；省直辖县列表
     */
    @JsonProperty("city")
    private Object cityList;
    /**
     * 城市编码
     * <p>
     * 例如：010
     */
    @JsonProperty("citycode")
    private Object cityCode;
    /**
     * 坐标点所在区
     * 例如：海淀区
     */
    private Object district;
    /**
     * 行政区编码
     * 例如：110108
     */
    @JsonProperty("adcode")
    private Object adCode;
    /**
     * 坐标点所在乡镇/街道（此街道为社区街道，不是道路信息）
     * <p>
     * 例如：燕园街道
     */
    private Object township;
    /**
     * 乡镇街道编码
     * <p>
     * 例如：110101001000
     */
    @JsonProperty("towncode")
    private Object townCode;

    public List<String> getCity() {
        if (Objects.isNull(cityList)) {
            return null;
        }
        if (cityList instanceof String) {
            city = Lists.newArrayList();
            city.add((String) cityList);

        }
        return city;
    }


}
